﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using AMVInfoSpace;

namespace AMVCommander
{
    public partial class FormTryParseHtmlAMV : Form
    {
        int AMVNewsInd;
        AMVInfo RetInfo = null;
        SITE Site = SITE.AMVNews;

        public FormTryParseHtmlAMV()
        {
            InitializeComponent();
        }

        public bool ShowDialog(int AMVNewsInd, out AMVInfo Info)
        {
            this.AMVNewsInd = AMVNewsInd;
            ShowDialog();
            Info = RetInfo;
            return Info != null;
        }

        private void FormTryParseHtmlAMV_Shown(object sender, EventArgs e)
        {
            StartAMVNewsParse();
        }

        #region *** привязка записи к AMVNews *****************************************

        WebBrowser wbr;
        void StartAMVNewsParse()
        {
            wbr = new WebBrowser();
            wbr.Location = new System.Drawing.Point(12, 74);
            wbr.MinimumSize = new System.Drawing.Size(20, 20);
            wbr.Name = "wbr";
            wbr.Size = new System.Drawing.Size(764, 389);
            wbr.TabIndex = 8;
            wbr.ScriptErrorsSuppressed = true;
            wbr.Navigate("http://amvnews.ru/index.php?go=Files&in=view&id=" + AMVNewsInd.ToString());
            tmrGrabAMV.Start();
        }

        DateTime dt = DateTime.Now;
        private void tmrGrabAMV_Tick(object sender, EventArgs e)
        {
            tmrGrabAMV.Stop();
            if (DateTime.Now.Second != dt.Second)
            {
                label1.Text += ".";
                dt = DateTime.Now;
            }

            if (wbr.ReadyState == WebBrowserReadyState.Complete)
            {
                string html = GetPageHtml(wbr);
                string fPathAkrossTagReplList = Application.StartupPath + "\\Tools\\AMVNewsParser\\AkrossTagReplList.csv";
                if (Site == SITE.Akross && !System.IO.File.Exists(fPathAkrossTagReplList))
                {
                    MessageBox.Show("Для парсинга необходим файл замены тегов для Akross " + fPathAkrossTagReplList);
                    Close();
                    return;
                }
                AmvHtmlParser.fPathAkrossTagReplList = fPathAkrossTagReplList;
                if (AMVInfoSpace.AmvHtmlParser.PageAMVNews_IsCorrect(ref html))
                {
                    AMVInfo ainf = null;
                    try
                    {
                        ainf = AmvHtmlParser.ParseAMVNewsInfo(html, AMVNewsInd);
                    }
                    catch
                    {
                        MessageBox.Show("Не удалось корректно распознать страницу. Автоматическая привязка не выполнена");
                        Close();
                        return;
                    }

                    RetInfo = ainf;
                }
                else
                {
                    MessageBox.Show(string.Format("Страницы клипа с id {0} нет на сайте AMVNews", AMVNewsInd));
                }
                Close();
            }
            else
            {
                tmrGrabAMV.Start();
            }
        }

        string GetPageHtml(WebBrowser Wbr)
        {
            String encodingAS = Wbr.Document.Encoding;
            Encoding hDocEncoding = Encoding.GetEncoding(encodingAS);
            using (System.IO.Stream aStream = Wbr.DocumentStream)
            using (System.IO.StreamReader SR = new System.IO.StreamReader(aStream, hDocEncoding))
            {
                String aText = "";
                while (SR.Peek() >= 0)
                    aText += SR.ReadLine() + "\r\n";
                return aText;
            }
        }

        #endregion *** привязка записи к AMVNews **************************************

    }
}
